关于补码运算的原理和对与求[-y]补一类问题的讨论

来源:百度知道 编辑:UC知道 时间:2024/07/02 07:02:11
教材中关于补码元算的讨论:
“设x和y是两个整数,可以证明两个数和的补码dengue两个数补码的和:
[x+y]补=2^n+(x+y)=(2^n+x)+(2^n+y)=[x]补+[y]补
同样,也可以证明该两数差的补码等于被减数的补码与减数负值的补码之和。
[x-y]补=2^n+(x-y)=2^n+x+2^n+(-y)=[x]补+[-y]补
上式证明了补码运算中,两数差的运算,简化为单纯的加法运算了。”

我的问题:
1:为什么[x+y]补等于2^n+(x+y)
2:为什么2^n+(x+y)等于(2^n+x)+(2^n+y)
3.同问题1类似,为什么(2^n+x)+(2^n+y)等于[x]补+[y]补
4.同问题1类似为什么[x-y]补等于2^n+(x-y)
5.同问题2类似为什么2^n+(x-y)等于2^n+x+2^n+(-y)
6.同问题3类似为什么2^n+x+2^n+(-y)等于[x]补+[-y]补

教材中关于求[-y]补的讨论:
“对于x的补码我们已经会求,但对[-y]补的求法可通过对[y]补‘连同符号位在内一起变反加‘1’得到’”

我的问题:
7.为什么对[-y]补的求法可 “ 通过对[y]补‘连同符号位在内一起变反加‘1’得到’ ”

以上文字中‘[x]补’表示x的补码表示,如果觉得我上面文字不清楚的,可以看下面这个图

关键你要理解【补码的定义式子】是:[a]补=2^n+a (保留n位),其中a是一个正数或负数,n是最终补码的二进制位数。
所以你问的第1、3、4、6个问题就是用不同的东西代替上式中的a而已。
第2、5个问题:因为“最终补码的二进制位数=n”,也就是只保留低n位,所以在“最终”之前,你可以任意“增加”或者“减少”低n位=0的数(高位不=0),对最后结果(只保留低n位)不会造成影响,2^n恰好就是这样的数,于是:
2^n+(x+y)=2^n+2^n+(x+y)=(2^n+x)+(2^n+y)=......

最后一个问题说起来稍麻烦些,有空再说吧,呵呵(你可以先按照“恰好如此”理解)

I don`t know